#!/bin/bash

password="ht"

run_packages_path=$HOME/package
run_package_install_iofo=$HOME/.run_package_install_iofo

# 如果$run_package_install_iofo文件不存在，则创建该文件
if [[ ! -f "$run_package_install_iofo" ]]; then
    touch $run_package_install_iofo
fi

# 通过find命令，查找${run_packages_path}目录下的所有.run文件
run_files=$(find ${run_packages_path} -name "*.run")

# 通过find命令，查找${run_packages_path}目录下的所有.deb文件
deb_files=$(find ${run_packages_path} -name "*.deb")

# 遍历文件，并校验md5值，如果md5值与已安装的文件不一致，则执行安装
for file in $run_files; do

    # 判断文件是否有执行权限，如果没有，则赋予执行权限
    if [[ ! -x "$file" ]]; then
        chmod +x "$file"
    fi

    # 获取文件名
    filename=$(basename -- "$file")
    # 获取文件的md5值
    md5=$(md5sum "$file" | awk '{print $1}')
    # 判断是否已经安装该run文件
    is_installed=$(cat $run_package_install_iofo | grep "$filename")
    # 如果没有安装，则执行安装
    if [[ -z "$is_installed" ]]; then
        echo "install ${filename} ..."
        echo "$password" | sudo -S "${file}"
        # 安装完成后，记录已安装的文件的md5值
        echo "$filename $md5" >>$run_package_install_iofo
        continue
    fi

    # 获取已安装的文件的md5值
    installed_md5=$(cat $run_package_install_iofo | grep "$filename" | awk '{print $2}')
    # 如果md5值不一致，则执行安装
    if [[ "$md5" != "$installed_md5" ]]; then
        echo "install ${filename} ..."
        echo "$password" | sudo -S "${file}"
        # 安装完成后，更新已安装的文件的md5值
        sed -i "s/$filename.*/$filename $md5/g" $run_package_install_iofo
    fi
done

# 遍历文件，并校验md5值，如果md5值与已安装的文件不一致，则执行安装
for file in $deb_files; do

    # 判断文件是否有执行权限，如果没有，则赋予执行权限
    if [[ ! -x "$file" ]]; then
        chmod +x "$file"
    fi

    # 获取文件名
    filename=$(basename -- "$file")
    # 获取文件的md5值
    md5=$(md5sum "$file" | awk '{print $1}')
    # 判断是否已经安装该run文件
    is_installed=$(cat $run_package_install_iofo | grep "$filename")
    # 如果没有安装，则执行安装
    if [[ -z "$is_installed" ]]; then
        echo "install ${filename} ..."
        echo "$password" | sudo -S dpkg -i "${file}"
        # 安装完成后，记录已安装的文件的md5值
        echo "$filename $md5" >>$run_package_install_iofo
        continue
    fi

    # 获取已安装的文件的md5值
    installed_md5=$(cat $run_package_install_iofo | grep "$filename" | awk '{print $2}')
    # 如果md5值不一致，则执行安装
    if [[ "$md5" != "$installed_md5" ]]; then
        echo "install ${filename} ..."
        echo "$password" | sudo -S dpkg -i "${file}"
        # 安装完成后，更新已安装的文件的md5值
        sed -i "s/$filename.*/$filename $md5/g" $run_package_install_iofo
    fi
done

